package com.ruoyi.wxapimodule;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.wx.domain.ACat;
import com.ruoyi.wx.domain.AModule;
import com.ruoyi.wx.service.IACatService;
import com.ruoyi.wx.service.IAModuleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * author：pan
 * 微信小程序  猫咪信息（获取）
 *
 */

@RestController
@RequestMapping("/wxapi")
public class WxModuleController {

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Autowired
    private IAModuleService moduleService;

    /**
     * 查询所有模块
     * @param module
     * @return
     */
    @GetMapping("/loadModules")
    public AjaxResult loadModules(AModule module){
        // Redis的key
        String key = "load:modules:modules";

        // 去Redis缓存中查找
        String moduleListJson = redisTemplate.opsForValue().get(key);

        // 如果缓存中存在
        if(StrUtil.isNotBlank(moduleListJson)){

            //将数据转换
            List<AModule> aModules = JSONUtil.toList(moduleListJson, AModule.class);

            //直接返回数据【已设置 永不过期】
            return AjaxResult.success("缓存:模块查询成功！",aModules);
        }
        // 如果没有则进数据库去查找
        List<AModule> modules = moduleService.selectAModuleList(module);

        redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(modules));

        return AjaxResult.success("模块查询成功！", modules);
    }

}
